#include "pair.hpp"

template <typename T1, typename T2>
Pair<T1, T2>::Pair()
{}

template <typename T1, typename T2>
Pair<T1, T2>::Pair(T1 first, T2 second) {
    this->first = first;
    this->second = second;
}

template <typename T1, typename T2>
Pair<T1, T2>::Pair(const Pair<T1, T2>& other) {
    this->first = other.first;
    this->second = other.second;
}

template <typename T1, typename T2>
const Pair<T1, T2> Pair<T1, T2>::operator= (const Pair<T1, T2> &other) {
    this->first = other.first;
    this->second = other.second;
}

template <typename T1, typename T2>
bool Pair<T1, T2>::operator< (const Pair<T1, T2>& other) const {
    return this->first != other.first ? this->first < other.first : this->second < other.second;
}

template <typename T1, typename T2>
Pair<T1, T2> MakePair(T1 first, T2 second) {
    return Pair<T1, T2>(first, second);
}
